-
-
Notifications
You must be signed in to change notification settings - Fork 963
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Middle outer inner wall ordering mode (Draft) #4333
Conversation
commit cf39ba0 Author: igiannakas <[email protected]> Date: Mon Mar 4 12:22:39 2024 +0000 Update PerimeterGenerator.cpp commit ff4347f Author: igiannakas <[email protected]> Date: Mon Mar 4 12:09:03 2024 +0000 Middle Outer Inner implementation commit 00486f7 Merge: 3b34635 1cb88d0 Author: igiannakas <[email protected]> Date: Mon Mar 4 11:34:25 2024 +0000 Merge branch 'middle-outer-inner' of https://github.com/igiannakas/OrcaSlicer into middle-outer-inner commit 3b34635 Author: igiannakas <[email protected]> Date: Mon Mar 4 11:34:20 2024 +0000 Update PerimeterGenerator.cpp commit 1cb88d0 Merge: 78e23b6 27439ed Author: Ioannis Giannakas <[email protected]> Date: Mon Mar 4 11:23:00 2024 +0000 Merge branch 'SoftFever:main' into middle-outer-inner commit 78e23b6 Merge: 4e7a0f9 5dab9b2 Author: Ioannis Giannakas <[email protected]> Date: Sat Mar 2 11:36:57 2024 +0000 Merge branch 'SoftFever:main' into middle-outer-inner commit 4e7a0f9 Author: igiannakas <[email protected]> Date: Mon Feb 5 10:01:26 2024 +0000 First commit - MiddleOuterInner
commit cf39ba0 Author: igiannakas <[email protected]> Date: Mon Mar 4 12:22:39 2024 +0000 Update PerimeterGenerator.cpp commit ff4347f Author: igiannakas <[email protected]> Date: Mon Mar 4 12:09:03 2024 +0000 Middle Outer Inner implementation commit 00486f7 Merge: 3b34635 1cb88d0 Author: igiannakas <[email protected]> Date: Mon Mar 4 11:34:25 2024 +0000 Merge branch 'middle-outer-inner' of https://github.com/igiannakas/OrcaSlicer into middle-outer-inner commit 3b34635 Author: igiannakas <[email protected]> Date: Mon Mar 4 11:34:20 2024 +0000 Update PerimeterGenerator.cpp commit 1cb88d0 Merge: 78e23b6 27439ed Author: Ioannis Giannakas <[email protected]> Date: Mon Mar 4 11:23:00 2024 +0000 Merge branch 'SoftFever:main' into middle-outer-inner commit 78e23b6 Merge: 4e7a0f9 5dab9b2 Author: Ioannis Giannakas <[email protected]> Date: Sat Mar 2 11:36:57 2024 +0000 Merge branch 'SoftFever:main' into middle-outer-inner commit 4e7a0f9 Author: igiannakas <[email protected]> Date: Mon Feb 5 10:01:26 2024 +0000 First commit - MiddleOuterInner
In summary I have mixed feelings about this mode. In most regular printing scenarios, inner outer inner works best and gives the best external wall finish. Also overhang wise, it can easily achieve 45-50 degrees angles without much issue, especially if attention is paid to extrusion step over. On the other hand, this setting is marginally better in terms of external wall quality compared to inner-outer mode, as there is one (or more) less internal perimeters deforming the external perimeter. It always is affected by the one neighbouring perimeter. This also theoretically means it can print better overhangs. For me, its a mode that I will use on rare occasions. I always print with inner-outer-inner mode as most models that I print do not contain 50+ degree overhangs. And when they do they are at limited locations which can be addressed with careful support placement. The rare models where this may work best are models of threads and also to print the Voron parts. That is because threads need specific external dimensions that are working best with inner-outer-inner mode but inner-outer-inner can on occasion lead to extrusion "detachment" from the wall. Equally with Voron parts, the fixed 0.4mm extrusion width and 0.2 layer height doesn't allow for much step over meaning some parts suffer due to their steep overhangs. In the above two situations, this mode may be useful. I'll leave to the community to test further if there is interest in this mode. |
Well that confirms my findings, that the middle-outer-inner mode is a compromise between print quality and overhang issues. Are you printing ABS by any chance? Even overhangs of 45° can get tough with outer-inner or inner-outer-inner, because you cannot just increase part cooling beyond a certain point due to warping issues. Also for the Voron print settings, the perimeter width is forced to 0.4mm so you cannot adjust the stepover (EDIT: Oops, that is what you have already written). The improvement compared to inner-outer mode will be much more apparent, if you use the Voron 4-perimeter setting (or even more than that). I am having a hard time finding the artifact (Linux) for the PR build, can you give me a hint? |
All artefacts are here: https://github.com/SoftFever/OrcaSlicer/actions/runs/8141514816 bottom of the page - you need to log in to GitHub to download. |
Completely agree with you. Theoretically this wall ordering mode should reduce artefacting on external walls when printing with more than 2-3 perimeters as there is less material squishing the perimeter. Combined with the precise wall feature which increases the spacing between the first and second perimeter, it should give good smooth walls. However, the quality for me is still not 100% there. I was hoping that it would replace the inner-outer-inner mode for me but turns out that is not the case as still there is some slight deformation due to the first internal perimeter, even with precise wall on. Agree that for the Voron parts specifically this could be a good use case to improve quality - its the ideal combination for this feature - thin extrusion widths, with large layer heights leading to small step over together with 4 perimeters leading to more squish. It would be great if someone from the community did an AB test with Voron parts to test that - I've finished printing all of mine so done with ABS right now :D BTW, printed them all using inner-outer-inner with some limited exceptions and they worked great btw. |
Okay, that was surprisingly hard to find :-) I have done some more testing, this time with Precise Wall actually turned on for Inner-Outer mode (I never bothered to enable it before) and I have to admit, that there really is not much difference between Middle-Outer-Inner and the regular Inner-Outer mode anymore. I am curious, is there any downside to the precise wall feature? Do overhangs still perform good? From left to right: Inner-Outer, Middle-Outer-Inner, Inner-Outer-Inner. It almost looks like Middle-Outer-Inner (No precise wall) loses against Inner-Outer (With precise wall). Material is ABS, printed on a Micron+ with a Vz-Hextrudort Extruder and Dragon SF hotend. |
As you didn’t enable precise wall for middle outer inner it will look worse for sure. indeed, there is very little benefit from what I see but you’re not comparing apples to apples :) Precise wall slightly increases the spacing between the middle extrusion and the wall to allow for more space for any extrusion deviations coming from the internal walls to go to without affecting the external perimeter too much. It doesn’t have really any downside print quality wise. |
I was a bit thrown off by the tooltip saying it's for inner-outer only, but that may be currently outdated. Slicer was Classic in this case, but preview looked fine in middle-outer-inner mode.
I see, thanks. It looks to me a bit like, if your extrusion factor is reasonably well tuned, there is not much difference between one wall and three walls printed, before external perimeter is printed. At least with the additional "decoupling" that precise wall provides. So in a sense, "precise wall" actually already achieves, what I set out to achieve with the proposed wall order mode. Without precise wall, the difference is larger (as shown by the images in the earlier pull request of mine). But precise wall may be a cleaner solution. |
Yeah I didn’t update all the tool tips yet - it’s draft to evaluate quality and whether it’s worth it as a mode. It may be beneficial if you could also run an Arachne test with precise wall on and the three modes to do a final comparison. Maybe with 4 walls too, to check whether that is a reasonable use case or not. thank you for this 👌🏻 |
Yeah, happy to. I switched to Arachne however and the perimeter order looks different. Is it supposed to be 1, 3, 4, 2 (with 1 being innermost, 4 being external perimeter)? |
Yeap that is intentional - it prints inside out for overall better overhang performance and then swaps to print the two external perimeters then the final remaining one. Appreciate that is slightly different to the classic implementation; however it shouldn't create any downsides as the perimeters are still well spaced because of the middle perimeter printed last to prevent external impact from internal perimeters. |
I'm not completely sold on that - with more layers (for example 10), this "middle" (2nd outer) perimeter will get squished quite a lot and this will propagate the only way it can - upwards. That material still needs to go somewhere... Usually it ends as a blob on the nozzle (I printed lots of parts with PETG CF which tends to do this and with 10+ walls and I had to clean the nozzle for this exact reason during the print even with Inner-Outer where the filament should have a way to go). |
That can change if there is value in the mode. Currently it’s not certain whether there is any visual impact… |
I've pushed a new commit to change the handling of wall ordering for Arachne. Now it does first internal, external, then the remaining internal perimeters outside in, to move the excess material towards the inside of the model. Build files should be available soon here: https://github.com/SoftFever/OrcaSlicer/actions/runs/8176241198 |
Can confirm, thanks a bunch! |
Can you have a look at this model? In the first few layers, Arachne also seems to have some wall ordering problems.. |
Thank you, @skuep and @igiannakas, for your implementation and testing. Thanks to everyone who participated in the experiment. I feel this result is not conclusive enough. Therefore, I will close this PR for now. |
Makes sense :) I haven't been able to conclusively demonstrate its benefit other than some edge cases where it has been marginal. I'll retain the code in my dev branch & I'll keep the pushed branch around, just in case in the future there is a use case for it and not to loose the effort :) @zviratko If you want to use this feature, feel free to grab builds from my dev branch - I do keep it synced and updated from mainline but it also has a compilation of all the other features/changes I'm working on so can't promise you it will always function well! (https://github.com/igiannakas/OrcaSlicer/actions) However, personally I equally haven't found much use for this feature (haven't used this option in months even with Voron parts) |
Thank you, I will use your builds from now on :) and thank you for all that hard work of keeping it up to date all this time. |
Building on the PR #3809 bringing this feature to Arachne, including handling of multiple islands following the inner-outer-inner code model and incorporating the above PR (classic) in its code.
Marking it as draft as this needs testing to confirm to what extent it benefits print quality and, hence, whether it is beneficial as a wall ordering mode. Also the classic mode could do with more development to handle multi-island special cases.
Fixes #3924
I'll be running the following print tests:
Voron cube - Middle Outer Inner vs Inner Outer Inner vs. Inner Outer Objectives:
Precise wall enabled. Objectives:
Test improvement and delta in wall extrusion consistency compared to baseline
Overall testing objective: Can this mode reasonably supplement inner-outer-inner and if so with what tradeoff in print quality. Is this mode an improvement over inner-outer mode and if so to what extent.